#ifndef MONTE_CARLO_ITERATOR_H
#define MONTE_CARLO_ITERATOR_H

#include "Cell.h"

class World;

/* Monte Carlo iterator */
class MonteCarloIterator {
public:
	/* ctor */
	MonteCarloIterator(World& world);

	/* start step */
	void startStep();

	/* get random tile pair */
	bool getTilePair(int* pxTile, int* pyTile, int* pxNeighbour, int* pyNeighbour);

	/* update bounding box */
//	void updateBoundingBox(int xPosition, int yPosition, CellId id);
	void updateCount();

private:
	World& _world;       /* world */

//	int _x1;
//	int _x2;
//	int _y1;
//	int _y2;
//	int _width;
//	int _height;
	uint64 _updatesLeft;
	uint64 _updatesCount;

	/* compute bounding box */
	void _computeBoundingBox();

};

#endif // MONTE_CARLO_ITERATOR_H

